#!/bin/bash

#使用说明：
#将脚本分别上传到分支和总部
#添加可执行权限  chmod +x sangforvpn.sh
# ./sangforvpn.sh n 1/0
#n为配置隧道个数 1为总部 0为分支
config(){
         
      alive_sec=120                          #隧道保持时间
      our_said=10000                         #分支隧道id，递增方式
      peer_said=50000                        #总部隧道id，递增方式
      local_addr="22.23.25.109"              #分支wan口ip
      peer_addr="22.23.25.110"               #总部wan口ip 
      mask=16                                #wan口掩码   
      peer_port=4009                         #总部服务器端口
      local_port=12123                       #分支起始端口                              
      subnets="20.20.20.1"                   #分支配置总部内网ip，递增方式  
      zbnets="40.40.40.1"                    #总部配置分支内网ip，递增方式
      network=32                             #总部和分支配置隧道对应的内网掩码
      pc_numble=1                            #隧道对应的内网个数 
      interface="eth2"
}

sangforvpn_fenzhi(){
        #配置分支隧道
        ip add add dev $interface $local_addr/$mask
        echo  {"ignore_line_addr":1,"alive_sec":$alive_sec,"our_said":${our_said},"peer_said":${peer_said},"local_addr":"${local_addr}","peer_addr":"$peer_addr","peer_port":$peer_port,"local_port":$local_port,"server":0,"subnets":["$subnets/$network"]} >fenzhi.json
        dp-debug addtun -f fenzhi.json

}
sangforvpn_zongbu(){
        #配置总部隧道
         ip add add dev $interface $peer_addr/$mask    
         echo \{\"ignore_line_addr\":1,\"alive_sec\":$alive_sec,\"our_said\":${peer_said},\"peer_said\":${our_said},\"local_addr\":\"${peer_addr}\",\"peer_addr\":\"$local_addr\",\"peer_port\":$local_port,\"local_port\":$peer_port,\"server\":1,\"subnets\":[\"$subnets/$network\"]\} >zongbu.json
         dp-debug addtun -f zongbu.json
}
generate(){
    #用来生成递增ip
    ip=$1
    n=$2                    #递增ip的个数，如为1时每次加1  3时每次加3
    one_ip=`echo $ip|awk -F "." '{print $1}'`
    two_ip=`echo $ip|awk -F "." '{print $2}'`
    three_ip=`echo $ip|awk -F "." '{print $3}'`
    last_ip=`echo $ip|awk -F "." '{print $4}'`
    last_ip=`expr $last_ip + $n`
    if [ $last_ip -gt 255 ]             #判断ip不超过255
    then
         three_ip=`expr $three_ip + 1`
         last_ip=1
         if [ $three_ip -gt 255 ]
         then
              two_ip=`expr $two_ip + 1`
              three_ip=1
              if [ $two_ip -gt 255 ]
              then
                  one_ip=`expr $one_ip + 1`
                  two_ip=1
              fi
          fi
    fi	
    add_addr=`echo $one_ip.$two_ip.$three_ip.$last_ip`   #需要递增的ip,可通过$add_addr赋值
        
}

main(){
     echo "开始配置sangforvpn"
     config                                 #执行配置文件
     i=0
     while [ $i -lt $1 ]
     do  
          if [ $2 == 0 ] 
          then
              sangforvpn_fenzhi
          elif [ $2 == 1 ]
          then
              sangforvpn_zongbu
          else
              echo "<error>参数错误"
              echo " 请说明配置总部还是分支"
              exit 0
          fi
          generate "$peer_addr" 1             
          peer_addr=$add_addr                #peer_addr递增
          generate "$local_addr" 1
          local_addr=$add_addr
          generate "$subnets" $pc_numble     #分支配置总部子网递增 
          subnets=$add_addr
          generate "$zbnets" $pc_numble
          zbnets=$add_addr 
          peer_said=`expr $peer_said + 1`
          our_said=`expr $our_said + 1`
          i=`expr $i + 1`
          echo "配置第${i}条隧道完成"
     done
     echo “sangfor vpn配置完成”
}

main $@

